AWS Fargate事始め〜CloudWatch Logsにこんにちは
はじめに
こんにちは、HOMELAND第7シーズンが始まって毎週待ち遠しい井手です。 入社して間もない頃、「社内システムの一部をFargateで代替できるか調査してみて」との天啓を得ました。 まずはお約束としてなるべく手順が少なく「CloudWatch Logsにこんにちはと表示させる」(今回要件的にマルチバイト文字がミソ)をやってみたのでご紹介したいと思います。
Fargateとは
Fargateとは一言で表すと「サーバーやクラスターの管理が不要なコンテナの実行」 = EC2不要でコンテナが実行出来るサービスです。 ※(参考)公式ページ ※個人的にはHerokuっぽいイメージのサービス。
注意点
- FargateはECS上の起動タイプで「Fargate」を選択する事で利用出来ます。 ※EKS対応は2018年内予定
- 3/28日現在米国東部 (バージニア北部) リージョンでのみ利用できます。
- 料金は性能に応じた秒単位課金 ※(参考)弊社ブログ:【AWS】AWS Fargateの利用料金を試算した #reinvent
やってみた
1. Dockerイメージの作成
say_helloディレクトリ配下に下記ファイルを用意します。 ・実行ファイルの用意
# -*- coding: utf-8 -*- def say_hello(): print("こんにちは") if __name__ == "__main__": say_hello()
・Dockerfileの用意
FROM python:2.7.14-slim WORKDIR /app ADD . /app CMD ["python", "app.py"]
・Dockerイメージのビルド
$ pwd /Users/xxxx/desktop/say_hello $ docker build -t say_hello .
2. ECR(Amazon Elastic Container Registry)へのDockerイメージの登録
AWSコンソール上でAmazon ECS>ECR と開き今すぐ始めるをクリック。
リポジトリ名を入力し、次のステップをクリック。
CLIでpushするコマンドが以下の通り表示されるので実行する。(今回の手順ではbuild部分は済ましているので飛ばす)
3. クラスター、サービス、タスク、コンテナの用意
ECRにDockerイメージの準備が出来たので、本題のFargateの準備をします。以下の画像が分かりやすいですが、ECSでのFargateでは以下のような構成になっており、クラスターやタスク等は個別に定義する事ができます。 ただ、今回の本題はログの吐き出しなのでここはGet Startedを利用してサクッと設定してしまいます。
AWSコンソール上でAmazon ECSを開きGet Startedをクリックし、コンテナ定義でcustomを選択し設定をクリック。
イメージにECRより作成したリポジトリのURIを入力し更新をクリック。
後は、初期値の設定を変更せず更新>次>次>次>作成 とボタンをクリックし進んで下さい。
4. CloudWatch Logsの確認
最後にCloudWatch Logsを確認します。
※設定後はタスクは起動し続けるのでクラスターの削除、またはサービスのタスク数を0にして下さい。
最後に
今回、Fargateを触ってみてその手軽さから今後広く使われていくサービスなのではと感じました。 東京リージョンでのサービス開始はまだですが、これからも積極的にFargateを利用して行きたいと思います。